From 60780dc68dfd9347f8f3b1cae2e0544361ca8b05 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 12 Mar 2004 23:23:28 +0000 Subject: [PATCH] Keep the cell_list in a consistent state while iterating over it, since Sat Mar 13 00:07:51 2004 Matthias Clasen * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): Keep the cell_list in a consistent state while iterating over it, since clear_attributes() also iterates over it. (another instance of #136585, Morten Welinder) --- ChangeLog | 7 +++++++ ChangeLog.pre-2-10 | 7 +++++++ ChangeLog.pre-2-4 | 7 +++++++ ChangeLog.pre-2-6 | 7 +++++++ ChangeLog.pre-2-8 | 7 +++++++ gtk/gtktreeviewcolumn.c | 13 ++++++------- 6 files changed, 41 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8bdae20012..238ec8d48c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Mar 13 00:07:51 2004 Matthias Clasen + + * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): + Keep the cell_list in a consistent state while iterating over it, + since clear_attributes() also iterates over it. (another instance + of #136585, Morten Welinder) + Fri Mar 12 17:20:15 2004 Owen Taylor * gtk/gtkarrow.c (gtk_arrow_expose): Swap GTK_ARROW_LEFT diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 8bdae20012..238ec8d48c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Sat Mar 13 00:07:51 2004 Matthias Clasen + + * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): + Keep the cell_list in a consistent state while iterating over it, + since clear_attributes() also iterates over it. (another instance + of #136585, Morten Welinder) + Fri Mar 12 17:20:15 2004 Owen Taylor * gtk/gtkarrow.c (gtk_arrow_expose): Swap GTK_ARROW_LEFT diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 8bdae20012..238ec8d48c 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Sat Mar 13 00:07:51 2004 Matthias Clasen + + * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): + Keep the cell_list in a consistent state while iterating over it, + since clear_attributes() also iterates over it. (another instance + of #136585, Morten Welinder) + Fri Mar 12 17:20:15 2004 Owen Taylor * gtk/gtkarrow.c (gtk_arrow_expose): Swap GTK_ARROW_LEFT diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 8bdae20012..238ec8d48c 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Sat Mar 13 00:07:51 2004 Matthias Clasen + + * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): + Keep the cell_list in a consistent state while iterating over it, + since clear_attributes() also iterates over it. (another instance + of #136585, Morten Welinder) + Fri Mar 12 17:20:15 2004 Owen Taylor * gtk/gtkarrow.c (gtk_arrow_expose): Swap GTK_ARROW_LEFT diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 8bdae20012..238ec8d48c 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Sat Mar 13 00:07:51 2004 Matthias Clasen + + * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_cell_layout_clear): + Keep the cell_list in a consistent state while iterating over it, + since clear_attributes() also iterates over it. (another instance + of #136585, Morten Welinder) + Fri Mar 12 17:20:15 2004 Owen Taylor * gtk/gtkarrow.c (gtk_arrow_expose): Swap GTK_ARROW_LEFT diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index 88c299f93b..97da32019b 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -663,17 +663,16 @@ gtk_tree_view_column_cell_layout_clear (GtkCellLayout *cell_layout) g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); column = GTK_TREE_VIEW_COLUMN (cell_layout); - for (list = column->cell_list; list; list = list->next) + while (column->cell_list) { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *)list->data; + GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *)column->cell_list->data; - gtk_tree_view_column_clear_attributes (column, info->cell); - g_object_unref (info->cell); + gtk_tree_view_column_cell_layout_clear_attributes (cell_layout, info->cell); + g_object_unref (G_OBJECT (info->cell)); g_free (info); + column->cell_list = g_list_delete_link (column->cell_list, + column->cell_list); } - - g_list_free (column->cell_list); - column->cell_list = NULL; } static void -- 2.30.2